Some debug help
authorMatthias Clasen <mclasen@redhat.com>
Sat, 6 Aug 2016 13:37:47 +0000 (09:37 -0400)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 18 Oct 2016 10:49:12 +0000 (11:49 +0100)
Make the bounds of drawing surfaces created by render nodes visible.

Trigger with GSK_DEBUG=surface.

gsk/gskdebug.c
gsk/gskdebugprivate.h
gsk/gskrendernode.c

index 1e0dc1c0b33e5c37bedcfa2291b8f2497f4f0945..216e118441d27e9664a4373b38ff575c0c2cc7e7 100644 (file)
@@ -7,7 +7,8 @@ static const GDebugKey gsk_debug_keys[] = {
   { "cairo", GSK_DEBUG_CAIRO },
   { "opengl", GSK_DEBUG_OPENGL },
   { "shaders", GSK_DEBUG_SHADERS },
-  { "transforms", GSK_DEBUG_TRANSFORMS }
+  { "transforms", GSK_DEBUG_TRANSFORMS },
+  { "surface", GSK_DEBUG_SURFACE }
 };
 #endif
 
index 5ab23b2535a2a9d3d20dbb8045700737bb8cc8df..ee1857c97b9ba18461407a01e68a9017df5b63a2 100644 (file)
@@ -11,7 +11,8 @@ typedef enum {
   GSK_DEBUG_CAIRO       = 1 << 2,
   GSK_DEBUG_OPENGL      = 1 << 3,
   GSK_DEBUG_SHADERS     = 1 << 4,
-  GSK_DEBUG_TRANSFORMS  = 1 << 5
+  GSK_DEBUG_TRANSFORMS  = 1 << 5,
+  GSK_DEBUG_SURFACE     = 1 << 6
 } GskDebugFlags;
 
 typedef enum {
index ecf38a27a0061408aba2313c1cfbef77b8db3da7..a58b07102ae95a2ccce581a572b38f7380a3ba65 100644 (file)
@@ -1370,6 +1370,17 @@ gsk_render_node_get_draw_context (GskRenderNode *node)
                    node->bounds.size.width, node->bounds.size.height);
   cairo_clip (res);
 
+  if (GSK_DEBUG_CHECK (SURFACE))
+    {
+      cairo_save (res);
+      cairo_rectangle (res,
+                       node->bounds.origin.x + 1, node->bounds.origin.y + 1,
+                       node->bounds.size.width - 2, node->bounds.size.height - 2);
+      cairo_set_source_rgba (res, 1, 0, 0, 0.5);
+      cairo_stroke (res);
+      cairo_restore (res);
+    }
+
   return res;
 }